#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
int main(){
int n, r;
int a;
cin >> n >> r;
int arr[n];
int ans = 0;
int aux;
vector<int>calentador;
for(int i=0; i<n; i++){
cin >> a;
arr[i] = -1;
if(a == 1){
calentador.push_back(i);
}
}
for(int i=0; i<calentador.size(); i++){
aux = r;
while(aux > 0){
if(calentador[i]-aux+1 >= 0){
arr[calentador[i]-aux+1] = calentador[i];
}
if(calentador[i]+aux-1 <= n-1){
arr[calentador[i]+aux-1] = calentador[i];
}
aux--;
}
arr[calentador[i]] = calentador[i];
}
int ui = 0;
while(ui<n){
if(arr[ui] == -1){
ans = -1;
break;
}
ans++;
ui = arr[ui] + r;
}
/*for(int j=0; j<n; j++){
if(arr[j] == -1){
ans = arr[j];
break;
}
ans++;
for(int i=0; i<calentador.size(); i++){
if(j < calentador[i]){
break;
}
if(j == calentador[i]){
ans++;
j += (r-1);
}
}
}*/
cout << ans;
}
275. H-Index II | 274. H-Index |
260. Single Number III | 240. Search a 2D Matrix II |
238. Product of Array Except Self | 229. Majority Element II |
222. Count Complete Tree Nodes | 215. Kth Largest Element in an Array |
198. House Robber | 153. Find Minimum in Rotated Sorted Array |
150. Evaluate Reverse Polish Notation | 144. Binary Tree Preorder Traversal |
137. Single Number II | 130. Surrounded Regions |
129. Sum Root to Leaf Numbers | 120. Triangle |
102. Binary Tree Level Order Traversal | 96. Unique Binary Search Trees |
75. Sort Colors | 74. Search a 2D Matrix |
71. Simplify Path | 62. Unique Paths |
50. Pow(x, n) | 43. Multiply Strings |
34. Find First and Last Position of Element in Sorted Array | 33. Search in Rotated Sorted Array |
17. Letter Combinations of a Phone Number | 5. Longest Palindromic Substring |
3. Longest Substring Without Repeating Characters | 1312. Minimum Insertion Steps to Make a String Palindrome |